package cn.kinoko.service.manga;

import cn.kinoko.model.manga.constant.MetricsType;
import cn.kinoko.model.manga.entity.MangaMetrics;
import cn.kinoko.model.manga.vo.LikeCountVO;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * @author kinoko
 */
public interface MangaMetricsService extends IService<MangaMetrics> {

    /**
     * 指标量+1
     *
     * @param mangaId 漫画id
     * @param uid     用户id
     * @param type    指标量类型
     */
    void metricsPlus(Long mangaId, Object uid, MetricsType type);

    /**
     * 指标量-1
     *
     * @param mangaId 漫画id
     * @param uid     用户id
     * @param type    指标量类型
     */
    void metricsMinus(Long mangaId, Long uid, MetricsType type);

    /**
     * 获取指标量和状态
     *
     * @param mangaId 漫画id
     * @param uid     用户id
     * @return 指标量
     */
    LikeCountVO getLikeCountAndFlag(Long mangaId, Long uid);

    /**
     * 获取指标量
     *
     * @param mangaId 漫画id
     * @return 指标量
     */
    Long getLikeCount(Long mangaId);
}